1. Field
The following description generally relates to the execution trace and the instrumentation of a program, and more particularly, to a method and apparatus for dynamically tracing and instrumenting a program.
2. Description of the Related Art
In developing application programs, a number of methods are employed to detect errors in the programs or systems. Generally, a program is developed through an iterative process, each stage of which consists of program design or modification followed by testing and analysis of the program. A commonly encountered technique for analyzing programs is to embed instrumentation within the program for collecting various types of data while the program is running. Data may be collected and processed in various ways to provide a basis for analyzing the program. Often, embedded instrumentation provides the only practical approach to understanding the real-time behavior of complex programs and automated systems.
For example, break instructions may be inserted at various locations of instructions of a program to be instrumented such that exceptions may be generated, and an operating system (OS) may detect hardware signals resulting from the exceptions. As a result, the OS may run a trace program to identify a problem. Examples of the above methods include a single-stepping in line (SSIL) method, a single-stepping out of line (SSOL) method, and the like.
In these methods, both the execution of a program to be instrumented and also the operations of an OS that supports the program's execution are traced. To this end, data that is generated and processed in different areas, for example, an application area where a program to be instrumented is run and an operating system area, must be coherently managed.
However, in this process, the program to be instrumented may be run in an application area, and management of a memory or addresses may become complicated. For example, an address of the program may need to be changed because of a change in the system, a change in the operating system, a change in the program, and the like.